//package com.mall.pay.services;
//
//import com.mall.order.OrderCoreService;
//import com.mall.pay.PayCoreService;
//import com.mall.pay.constants.PayReturnCodeEnum;
//import com.mall.pay.dto.PaymentRequest;
//import com.mall.pay.dto.alipay.AlipayQueryRetResponse;
//import com.mall.pay.dto.alipay.AlipaymentResponse;
//import org.springframework.beans.factory.annotation.Autowired;
//
///**
// * 对PayCoreService接口的具体实现
// */
//public class PayCoreServiceImpl implements PayCoreService {
//
//    @Autowired
//    PayHelper payHelper;
//
//    @Autowired
//    OrderCoreService orderCoreService;
//
//    /*
//         任务一：获取支付二维码
//     */
//    @Override
//    public AlipaymentResponse aliPay(PaymentRequest request) {
//
//        //0.定义response对象，封装结果，响应
//        AlipaymentResponse alipaymentResponse = new AlipaymentResponse();
//
//        //1.DI，调用payHelper获取支付二维码
//        String qrCodeName = payHelper.test_trade_precreate(request);  //核心部分
//
//        //2.获取返回结果的判断（失败的封装）
//        if (qrCodeName == null) {
//            // 获取支付二维码失败, 返回响应
//            alipaymentResponse.setCode(PayReturnCodeEnum.GET_CODE_FALIED.getCode());
//            alipaymentResponse.setMsg(PayReturnCodeEnum.GET_CODE_FALIED.getMsg());
//            return alipaymentResponse;
//        }
//
//        //2.获取返回结果的判断（成功的封装）
//        // 代码到这里说明，获取支付二维码成功
//        //  在tb_payment中针对待支付的订单生成一条记录，记录该订单的支付信息 status PAY_PROCESSING
//        alipaymentResponse.setCode(PayReturnCodeEnum.SUCCESS.getCode());
//        alipaymentResponse.setMsg(PayReturnCodeEnum.SUCCESS.getMsg());
//        alipaymentResponse.setQrCode(qrCodeName);
//        return alipaymentResponse;
//    }
//
//    /*
//           任务二：查询订单的支付结果
//     */
//    @Override
//    public AlipayQueryRetResponse queryAlipayRet(PaymentRequest request) {
//        boolean paySuccess = payHelper.test_trade_query(request);
//
//        if (paySuccess) {
//            //1. 修改tb_payment表中针对，指定订单的支付结果，支付成功时间，支付完成时间等 status PAY_SUCCESS
//              //  orderCoreService.payOrderSuccess()
//            //2. 修改订单相应的数据: 修改订单的状态为已支付
//            //3. 遍历订单中的订单商品条目，根据订单商品条目中商品购买的数量，去扣减对应商品的锁定库存
//
//            //4. 返回查询结果的响应  SUCCESS
//        } else {
//            // 1. 修改tb_payment表中针对，指定订单的支付结果，支付完成时间等 status PAY_FAIL
//            // 2. 返回查询结果的响应 ORDER_HAD_NOT_PAY
//        }
//
//        return null;
//    }
//}
